{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:04.370091Z",
     "start_time": "2025-11-21T07:11:04.363757Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import torchvision.datasets as dsets\n",
    "from torch.utils.data import DataLoader\n",
    "import matplotlib.pyplot as plt\n",
    "from xgboost import XGBClassifier\n",
    "from sklearn.metrics import accuracy_score, classification_report, confusion_matrix\n",
    "import seaborn as sns\n",
    "import random\n",
    "\n",
    "def visualize_xgboost_predictions(X_test, y_test, y_test_pred, num_images=10):\n",
    "    \"\"\"可视化XGBoost预测结果，显示原始图像和识别的数字\"\"\"\n",
    "    # 将展平的图像重新整形为28x28\n",
    "    images = X_test[:num_images].reshape(num_images, 28, 28)\n",
    "\n",
    "    # 创建子图\n",
    "    fig, axes = plt.subplots(2, 5, figsize=(15, 8))\n",
    "    axes = axes.ravel()\n",
    "\n",
    "    for i in range(num_images):\n",
    "        # 显示图像\n",
    "        axes[i].imshow(images[i], cmap='gray')\n",
    "\n",
    "        # 设置标题显示真实标签和预测标签\n",
    "        color = 'green' if y_test[i] == y_test_pred[i] else 'red'\n",
    "        axes[i].set_title(f'True: {y_test[i]}, Pred: {y_test_pred[i]}', color=color, fontsize=12)\n",
    "        axes[i].axis('off')\n",
    "\n",
    "    plt.suptitle('XGBoost MNIST Digit Recognition Results', fontsize=16)\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "def plot_confusion_matrix(y_true, y_pred):\n",
    "    \"\"\"绘制混淆矩阵\"\"\"\n",
    "    cm = confusion_matrix(y_true, y_pred)\n",
    "    plt.figure(figsize=(10, 8))\n",
    "    sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')\n",
    "    plt.title('Confusion Matrix for XGBoost MNIST Classification')\n",
    "    plt.xlabel('Predicted Label')\n",
    "    plt.ylabel('True Label')\n",
    "    plt.show()\n"
   ],
   "outputs": [],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:04.447664Z",
     "start_time": "2025-11-21T07:11:04.379511Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 设置随机种子以确保结果可重现\n",
    "random_seed = np.random.randint(0, 10000)\n",
    "np.random.seed(random_seed)\n",
    "random.seed(random_seed)\n",
    "\n",
    "# 设置批次大小\n",
    "batch_size = 1000  # 增加批次大小以加快处理速度\n",
    "\n",
    "# 加载MNIST数据集\n",
    "print(\"Loading MNIST dataset...\")\n",
    "mnist_train_dataset = dsets.MNIST(root=\"dataset/mnist\", train=True, download=True)\n",
    "mnist_test_dataset = dsets.MNIST(root=\"dataset/mnist\", train=False, download=True)\n",
    "\n",
    "# 创建数据加载器\n",
    "train_loader = DataLoader(dataset=mnist_train_dataset, batch_size=batch_size, shuffle=True)\n",
    "test_loader = DataLoader(dataset=mnist_test_dataset, batch_size=batch_size, shuffle=True)  # 改为True以随机选择测试数据\n",
    "\n",
    "# 设置随机选择的数据量\n",
    "train_sample_size = 10000  # 从60000个训练样本中随机选择10000个\n",
    "test_sample_size = 2000    # 从10000个测试样本中随机选择2000个\n",
    "\n",
    "# 准备训练数据（随机选择）\n",
    "print(f\"Preparing training data (randomly selecting {train_sample_size} samples)...\")\n",
    "train_indices = np.random.choice(len(train_loader.dataset), train_sample_size, replace=False)\n",
    "X_train = train_loader.dataset.data[train_indices].numpy()\n",
    "X_train = X_train.reshape(X_train.shape[0], 28 * 28)  # 展平图像为784维特征向量\n",
    "y_train = train_loader.dataset.targets[train_indices].numpy()\n",
    "\n",
    "# 准备测试数据（随机选择）\n",
    "print(f\"Preparing test data (randomly selecting {test_sample_size} samples)...\")\n",
    "test_indices = np.random.choice(len(test_loader.dataset), test_sample_size, replace=False)\n",
    "X_test = test_loader.dataset.data[test_indices].numpy()\n",
    "X_test = X_test.reshape(X_test.shape[0], 28 * 28)  # 展平图像为784维特征向量\n",
    "y_test = test_loader.dataset.targets[test_indices].numpy()\n",
    "\n",
    "# 创建XGBoost分类器\n",
    "print(\"Creating XGBoost classifier...\")\n",
    "xgb_model = XGBClassifier(\n",
    "    n_estimators=10,             # 减少树的数量以提高训练速度\n",
    "    max_depth=6,                # 树的最大深度\n",
    "    learning_rate=0.1,          # 学习率\n",
    "    subsample=0.8,              # 训练样本采样比例\n",
    "    colsample_bytree=0.8,       # 特征采样比例\n",
    "    random_state=random_seed,   # 使用与数据选择相同的随机种子\n",
    "    verbosity=1,                # 显示训练过程信息\n",
    "    n_jobs=-1                   # 使用所有CPU核心并行训练\n",
    ")"
   ],
   "id": "6b216eb3ba44f9a8",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading MNIST dataset...\n",
      "Preparing training data (randomly selecting 10000 samples)...\n",
      "Preparing test data (randomly selecting 2000 samples)...\n",
      "Creating XGBoost classifier...\n"
     ]
    }
   ],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:09.338998Z",
     "start_time": "2025-11-21T07:11:04.458241Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 训练模型\n",
    "print(\"Training XGBoost model...\")\n",
    "print(\"Note: Training may take 1-3 minutes depending on your hardware.\")\n",
    "print(\"Training progress (showing every 10 iterations):\")\n",
    "xgb_model.fit(X_train, y_train, verbose=10)  # 每10轮显示一次进度\n"
   ],
   "id": "a97292df66b1222c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training XGBoost model...\n",
      "Note: Training may take 1-3 minutes depending on your hardware.\n",
      "Training progress (showing every 10 iterations):\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "XGBClassifier(base_score=None, booster=None, callbacks=None,\n",
       "              colsample_bylevel=None, colsample_bynode=None,\n",
       "              colsample_bytree=0.8, device=None, early_stopping_rounds=None,\n",
       "              enable_categorical=False, eval_metric=None, feature_types=None,\n",
       "              feature_weights=None, gamma=None, grow_policy=None,\n",
       "              importance_type=None, interaction_constraints=None,\n",
       "              learning_rate=0.1, max_bin=None, max_cat_threshold=None,\n",
       "              max_cat_to_onehot=None, max_delta_step=None, max_depth=6,\n",
       "              max_leaves=None, min_child_weight=None, missing=nan,\n",
       "              monotone_constraints=None, multi_strategy=None, n_estimators=10,\n",
       "              n_jobs=-1, num_parallel_tree=None, ...)"
      ],
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  display: none;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  overflow: visible;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".estimator-table summary {\n",
       "    padding: .5rem;\n",
       "    font-family: monospace;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".estimator-table details[open] {\n",
       "    padding-left: 0.1rem;\n",
       "    padding-right: 0.1rem;\n",
       "    padding-bottom: 0.3rem;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table {\n",
       "    margin-left: auto !important;\n",
       "    margin-right: auto !important;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(odd) {\n",
       "    background-color: #fff;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(even) {\n",
       "    background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:hover {\n",
       "    background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".estimator-table table td {\n",
       "    border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "}\n",
       "\n",
       ".user-set td {\n",
       "    color:rgb(255, 94, 0);\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td.value pre {\n",
       "    color:rgb(255, 94, 0) !important;\n",
       "    background-color: transparent !important;\n",
       "}\n",
       "\n",
       ".default td {\n",
       "    color: black;\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td i,\n",
       ".default td i {\n",
       "    color: black;\n",
       "}\n",
       "\n",
       ".copy-paste-icon {\n",
       "    background-image: url();\n",
       "    background-repeat: no-repeat;\n",
       "    background-size: 14px 14px;\n",
       "    background-position: 0;\n",
       "    display: inline-block;\n",
       "    width: 14px;\n",
       "    height: 14px;\n",
       "    cursor: pointer;\n",
       "}\n",
       "</style><body><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>XGBClassifier(base_score=None, booster=None, callbacks=None,\n",
       "              colsample_bylevel=None, colsample_bynode=None,\n",
       "              colsample_bytree=0.8, device=None, early_stopping_rounds=None,\n",
       "              enable_categorical=False, eval_metric=None, feature_types=None,\n",
       "              feature_weights=None, gamma=None, grow_policy=None,\n",
       "              importance_type=None, interaction_constraints=None,\n",
       "              learning_rate=0.1, max_bin=None, max_cat_threshold=None,\n",
       "              max_cat_to_onehot=None, max_delta_step=None, max_depth=6,\n",
       "              max_leaves=None, min_child_weight=None, missing=nan,\n",
       "              monotone_constraints=None, multi_strategy=None, n_estimators=10,\n",
       "              n_jobs=-1, num_parallel_tree=None, ...)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>XGBClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://xgboost.readthedocs.io/en/release_3.1.0/python/python_api.html#xgboost.XGBClassifier\">?<span>Documentation for XGBClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('objective',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">objective&nbsp;</td>\n",
       "            <td class=\"value\">&#x27;multi:softprob&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('base_score',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">base_score&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('booster',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">booster&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('callbacks',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">callbacks&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('colsample_bylevel',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">colsample_bylevel&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('colsample_bynode',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">colsample_bynode&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('colsample_bytree',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">colsample_bytree&nbsp;</td>\n",
       "            <td class=\"value\">0.8</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('device',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">device&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('early_stopping_rounds',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">early_stopping_rounds&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('enable_categorical',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">enable_categorical&nbsp;</td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('eval_metric',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">eval_metric&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('feature_types',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">feature_types&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('feature_weights',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">feature_weights&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('gamma',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">gamma&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('grow_policy',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">grow_policy&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('importance_type',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">importance_type&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('interaction_constraints',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">interaction_constraints&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('learning_rate',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">learning_rate&nbsp;</td>\n",
       "            <td class=\"value\">0.1</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_bin',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_bin&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_cat_threshold',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_cat_threshold&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_cat_to_onehot',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_cat_to_onehot&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_delta_step',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_delta_step&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_depth',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_depth&nbsp;</td>\n",
       "            <td class=\"value\">6</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_leaves',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_leaves&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('min_child_weight',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">min_child_weight&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('missing',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">missing&nbsp;</td>\n",
       "            <td class=\"value\">nan</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('monotone_constraints',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">monotone_constraints&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('multi_strategy',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">multi_strategy&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('n_estimators',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">n_estimators&nbsp;</td>\n",
       "            <td class=\"value\">10</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('n_jobs',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">n_jobs&nbsp;</td>\n",
       "            <td class=\"value\">-1</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('num_parallel_tree',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">num_parallel_tree&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('random_state',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">random_state&nbsp;</td>\n",
       "            <td class=\"value\">9895</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('reg_alpha',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">reg_alpha&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('reg_lambda',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">reg_lambda&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('sampling_method',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">sampling_method&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('scale_pos_weight',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">scale_pos_weight&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('subsample',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">subsample&nbsp;</td>\n",
       "            <td class=\"value\">0.8</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('tree_method',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">tree_method&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('validate_parameters',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">validate_parameters&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('verbosity',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">verbosity&nbsp;</td>\n",
       "            <td class=\"value\">1</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
       "    // Get the parameter prefix from the closest toggleable content\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
       "\n",
       "    const originalStyle = element.style;\n",
       "    const computedStyle = window.getComputedStyle(element);\n",
       "    const originalWidth = computedStyle.width;\n",
       "    const originalHTML = element.innerHTML.replace('Copied!', '');\n",
       "\n",
       "    navigator.clipboard.writeText(fullParamName)\n",
       "        .then(() => {\n",
       "            element.style.width = originalWidth;\n",
       "            element.style.color = 'green';\n",
       "            element.innerHTML = \"Copied!\";\n",
       "\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'red';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "\n",
       "document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
       "\n",
       "    element.setAttribute('title', fullParamName);\n",
       "});\n",
       "</script></body>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:09.404850Z",
     "start_time": "2025-11-21T07:11:09.355576Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 进行预测\n",
    "print(\"Making predictions...\")\n",
    "y_test_pred = xgb_model.predict(X_test)\n"
   ],
   "id": "50168f0cfea5141c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Making predictions...\n"
     ]
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:09.447169Z",
     "start_time": "2025-11-21T07:11:09.438371Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 计算准确率\n",
    "accuracy = accuracy_score(y_test, y_test_pred)\n",
    "print(f'Accuracy: {accuracy:.4f}')\n"
   ],
   "id": "641c40e9adad6bc1",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 0.9110\n"
     ]
    }
   ],
   "execution_count": 15
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:09.490335Z",
     "start_time": "2025-11-21T07:11:09.472106Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 打印详细分类报告\n",
    "print(\"\\nClassification Report:\")\n",
    "print(classification_report(y_test, y_test_pred))\n"
   ],
   "id": "b05271201b3cf5c1",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Classification Report:\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.91      0.97      0.94       152\n",
      "           1       0.97      0.96      0.97       239\n",
      "           2       0.94      0.84      0.89       214\n",
      "           3       0.90      0.94      0.92       190\n",
      "           4       0.89      0.88      0.88       190\n",
      "           5       0.94      0.89      0.91       181\n",
      "           6       0.97      0.93      0.95       207\n",
      "           7       0.92      0.93      0.93       210\n",
      "           8       0.84      0.88      0.86       201\n",
      "           9       0.84      0.89      0.87       216\n",
      "\n",
      "    accuracy                           0.91      2000\n",
      "   macro avg       0.91      0.91      0.91      2000\n",
      "weighted avg       0.91      0.91      0.91      2000\n",
      "\n"
     ]
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:10.256236Z",
     "start_time": "2025-11-21T07:11:09.503270Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 可视化预测结果（显示前10个测试样本）\n",
    "print(\"Visualizing predictions...\")\n",
    "visualize_xgboost_predictions(X_test, y_test, y_test_pred, num_images=10)\n"
   ],
   "id": "db311ec93e83f511",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Visualizing predictions...\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1500x800 with 10 Axes>"
      ],
      "image/png": "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utlmm63N16WzM0a1r9LPNGeffXZR3dprr50a2b///e+iuoUXXji1h/fee6+obuWVVy6qe+ONN6ZyjTBGUQ9bbrllUd31119fVDd69Oiiug033LCo7qGHHiqqo+OOUWakAwAAAABAhiAdAAAAAAAyBOkAAAAAAJAhSAcAAAAAgAxBOgAAAAAAZAjSAQAAAAAgQ5AOAAAAAAAZgnQAAAAAAMgQpAMAAAAAQEa33I1MX8aMGVNU99RTTxXVrbbaakV1K6ywQlHd0KFDi+qgEY0dO7audW2hubm53e6bCfXt27dot/Tq1avTPAfpPK699tqiuieffLLu973PPvsU1fXs2TO1h2WXXbaobt555y2q69OnT2oPL7/8clHdaaed1ubrAo3giSeeKKrbeOON6/oZqb1061YWJey4445Fdeuvv35RXe/evYvqZplllqK6k08+uahuv/32K6obNWpUUR0wZX7wgx/UddcNHz68qO6hhx6q6/3ScZmRDgAAAAAAGYJ0AAAAAADIEKQDAAAAAECGIB0AAAAAADIE6QAAAAAAkCFIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABndcjcyfXnqqaeK6pZYYom63u/TTz9d1+UBNLK+ffsW1f3+978vqltggQVSozvllFPaexWYxr788su6vveYHIccckhqZN27dy+q69WrV1HdvffeW1S32GKL1fWx22WXXYrq/vGPfxTVwfRi9OjRRXUPP/xw6gweeOCBun7GHDBgQFHd3nvvXVS36667FtW9+uqrRXXHHXdcUR0wZXr37m3X0a7MSAcAAAAAgAxBOgAAAAAAZAjSAQAAAAAgQ5AOAAAAAAAZgnQAAAAAAMgQpAMAAAAAQIYgHQAAAAAAMgTpAAAAAACQIUgHAAAAAICMbrkbp2dLL710Ud3DDz9cvMynn366qO7EE08sqrv11ltTPXXpUnZcZY455qjr/Y4YMaKuywOmzFJLLVVU949//KNddnFTU1NRXXNzc2rk9evVq1dR3QILLJA6i8GDB7f3KkDDGDNmTFHdH/7wh6K6xRZbrKjuyy+/LKo79NBDG/r/AqBzeu6554rqjj766KK64cOHF9WdffbZRXXzzDNPUR0AnZsZ6QAAAAAAkCFIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABmCdAAAAAAA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c889t6gOOrpNNtmkrst75513iurWWWedorrXX399Kteoc5plllmK6rp0MQ+IxrTDDjsU1e222251vd/33nuvqG7gwIFFdS+++GJdP5s9+uijRXVLL710Ud2pp56a6mnTTTet6/6Dafm6/vzzz+v+/2yp//u//yuq+9nPfpbaw3PPPVfX5ZV+tt11112L6s4+++xUTy+//HJR3Te+8Y3iZb722mtTsUadl3eiAAAAAACQIUgHAAAAAIAMQToAAAAAAGQI0gEAAAAAIEOQDgAAAAAAGYJ0AAAAAADIEKQDAAAAAECGIB0AAAAAADIE6QAAAAAAkNEtdyON7bvf/W5R3eabb15UN2TIkKK6Tz75JLWHWWedtahuxhlnLKp78803p3KNoP0MHDiw4Xf/Rx99VFR35ZVXps7g/vvvL6rbYIMNiuq22267orqmpqaiOphenHfeeUV1c889d1HdzjvvXFT3+uuvp85g+eWXL6rr3bt3Xe/3pptuKqobPXp0Xe8X6qX0M0jXrl2L6rp0KZvzdvjhhxfVvfjii6mefvGLX9R1eTfffHNR3QwzzFDX9VtvvfWK6o4//viiuhNPPLGoDnLuueeeumcaSyyxRF13eun7gI8//riobvjw4amR7b777kV1BxxwQLu8PzrwwAOL6saMGTOVa4QZ6QAAAAAAkCFIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABmCdAAAAAAAyBCkAwAAAABAhiAdAAAAAAAyBOkAAAAAAJDRLXcjja1///51Xd7QoUPT9KRXr17tvQrAdKi5ubmhlwcd3VVXXVXXuunN4YcfXlQ3wwwz1PV+zz777LouD6a1zTbbrK7/b48dO3Yq16hz+vOf/1xUt88++xTVLbDAAkV1P/rRj4rqTjzxxKI6qIe99967uPaCCy4oqltiiSWK6tZYY42iumuuuaao7pBDDimqe/TRR4vq5ptvvqK6888/v6hugw02KKrr0aNHUd3HH39cVHfKKacU1Q0fPryojqlnRjoAAAAAAGQI0gEAAAAAIEOQDgAAAAAAGYJ0AAAAAADIEKQDAAAAAECGIB0AAAAAADIE6QAAAAAAkCFIBwAAAACADEE6AAAAAABkdMvdSGNbb731iuo++eSTorqBAwemRrb44ovXdXm33nprag89e/Ysrv3888+L6saOHTsVawRMS7PMMktdlzdy5Mi6Lg/onLbaaquiuv79+9f1fu+8886iutdee62u9wv10Lt37+LaVVddta47/cMPP6zra6yzGD58eFHd0KFDi+oWWGCBoroePXoU1c0777yp3tsCk/LQQw8V75zzzjuvqO7MM8+s6w5fY401iuoeeOCBorqbb765rvnRUkstleqpNH/bb7/9iur++c9/TuUaUW9mpAMAAAAAQIYgHQAAAAAAMgTpAAAAAACQIUgHAAAAAIAMQToAAAAAAGQI0gEAAAAAIEOQDgAAAAAAGYJ0AAAAAADIEKQDAAAAAEBGt9yNtI8+ffoU1a244opFdQ8++GBR3euvv54a2Q477FDX5Q0bNqyuy1t99dWL6n73u98VL3O99dYrqhs5cmTxMoG2Mc888xTV7bXXXnW936uuuqquywM6p3322aeobvbZZ6/r/Q4aNKio7ssvv6zr/UI9rLTSSsW1Cy20UF13+hNPPFFUN3z48Lreb2cxcODAoroNN9ywqG6OOeYoqrvoootSqU022aS4FqbWddddV1S34447FtWtscYaqZ66dSuLJ7faaquiuqampqK65ubmorrPPvusqO6aa66pax2Nx4x0AAAAAADIEKQDAAAAAECGIB0AAAAAADIE6QAAAAAAkCFIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABmCdAAAAAAAyOiWu5H28dOf/rSobpZZZimqO+uss1JnsOyyy9Z1eRtuuGFR3QknnFBUt8QSSxTV7bTTTqnUyJEji2uB9rXvvvsW1fXu3buu93vxxRfXdXlAx7LkkksW1S233HJ1vd9PP/20qO6WW26p6/3C9OK2225r71Xo0B544IGiurvvvruobvPNNy+qW3rppVOphRZaqKjulVdeKV4mTMrw4cOLds72229fVLfffvsV1R155JFFdd27d0+N7MYbbyyqO+CAA9p8XWhfZqQDAAAAAECGIB0AAAAAADIE6QAAAAAAkCFIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABmCdAAAAAAAyBCkAwAAAABARrfcjdTXZpttVlS35557FtW9+OKLRXX33ntvag8zzjhjUd2qq65aVNerV69UT4ceemhR3X333VdUt/LKK9f1cQMawwwzzFBU179//6K6pqamuo49I0aMKKoDOpaePXsW1Z199tlFdX369Cmq+/TTT4vqdtxxx6K61157ragOGtFhhx1WXFv6/zuNpfT91hZbbFFUN9988xXf92KLLVZU98orrxQvE6bWO++8U1R34oknFtU9//zzRXWXXnppamQ777xzUd0jjzxSVPfb3/52KteI9mJGOgAAAAAAZAjSAQAAAAAgQ5AOAAAAAAAZgnQAAAAAAMgQpAMAAAAAQIYgHQAAAAAAMgTpAAAAAACQIUgHAAAAAIAMQToAAAAAAGR0y91IfR188MFFdT169Ciq22effYrqZp111qK6rbbaqqhuhx12KKpbccUVi+r69OmT2sMuu+xSVHfttdcW1X355ZdTuUZAI9poo42K6lZeeeWiujFjxhTVXXbZZXVdHkwvSt9/7LTTTkV1d999d1Hd008/XVT3+uuvF9Udd9xxdR2jSpWOPbfddltd7xcaUXNzc5vU0vGMHTu2qM7zgOnFN77xjaK6ww47rKiuqakp1VOXLl3q+toute666xbV/fa3v63r/TLtmJEOAAAAAAAZgnQAAAAAAMgQpAMAAAAAQIYgHQAAAAAAMgTpAAAAAACQIUgHAAAAAIAMQToAAAAAAGQI0gEAAAAAIEOQDgAAAAAAGd1yN/L1FlhggeLdtM466xTVjRkzpqjukEMOKarr27dvUV2vXr1SPT311FNFdRdccEFR3d57711UN3To0KK6a6+9tqjuyy+/LKoDOqcjjzyyrsv74x//WNc66MjmmWee4tr99tuvqO5nP/tZUV2PHj2K6g4//PCiujfffLOo7rbbbiuqGzBgQKqnxx57rKjuhBNOqOv9Qkc2aNCg4tp+/fq16brQNvr06WPXwhTYYostiupWWGGForrm5uaiugcffLCo7vHHHy+q++EPf1hU171796K6hRdeuKhu7rnnLqp75513iuqYdsxIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABmCdAAAAAAAyBCkAwAAAABAhiAdAAAAAAAyBOkAAAAAAJAhSAcAAAAAgIxuuRv5eoceemjxbpppppnquku33nrroronn3yyqO6cc84pqrvmmmuK6p5//vmiuqWWWqqobu+99y6qGz16dFHdl19+WVQHdE6zzz57UV2fPn3qer9PPfVUXZcHjahbt7K3mL/+9a+Ll7nzzjunRvatb32rru9nSj322GNFdd/73veK6t59992pXCPoPF599dV2u+8BAwYU1Z1xxhltvi4d0be//e2iul133bWu91v6GTg89NBDdb1vqIcVVlihqO63v/1tXXf4p59+WlS32Wab1XV5d999d1HdxRdfXFS3/PLLF9VttdVWRXV/+MMfiuqYdsxIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABmCdAAAAAAAyBCkAwAAAABAhiAdAAAAAAAyBOkAAAAAAJAhSAcAAAAAgIxuuRv5erPOOmvxbvrb3/5WVHfmmWcW1T3xxBNFde+//35R3RdffJHawworrFDX5ZXuF6Bz6tq1a1HdoEGDiuoWWGCBoroXXnihqO7KK68sqoOObL311iuq23nnndt8XTq70rHs3XffbfN1gc7m3nvvLa599tlni+qWWmqporoFF1ywqG7ppZcuqnvmmWfS9OQnP/lJUd1ss81WVPfZZ58V1e27776p1CeffFJcC9PKEUccUVQ300wz1fV+f/Ob3xTVffrpp3W93xtuuKGo7uyzzy6q69mzZ1HdGWecUVT3r3/9q6juoYceKqpj6pmRDgAAAAAAGYJ0AAAAAADIEKQDAAAAAECGIB0AAAAAADIE6QAAAAAAkCFIBwAAAACADEE6AAAAAABkCNIBAAAAACBDkA4AAAAAABndcjfy9Q488MDi3TR69Gi7dCIOOeSQuu6Xs846y36G6dgCCyxQVLfBBhvU9X6PPvroorr//Oc/db1faET33ntvUd1dd91VvMx6v2Y7ix//+MdFdbPPPntR3QknnFBU9/nnnxfVQUc2OZ/fSsezpZdeuqhuttlmK6pbZ511iuqeeeaZ1BmssMIKRXU777xzUV1TU1NR3bvvvltUd//99xfVwbS28sorF9VtuummqT289957qZGde+65RXUnnXRSUV3Pnj2L6maaaaaiOqYdM9IBAAAAACBDkA4AAAAAABmCdAAAAAAAyBCkAwAAAABAhiAdAAAAAAAyBOkAAAAAAJAhSAcAAAAAgAxBOgAAAAAAZAjSAQAAAAAgo1vuRr7e6NGj7aapNMMMM9R1H37++ed1XR7QsRx99NFFdU1NTUV1H3/8cVHdLbfcUlQH04MxY8YU1W222WbFy1x66aWL6tZYY42iuvXXX7+o7tZbb031tP/++xfVrbLKKkV18847b1HdEUccUVT3/e9/v6hu0003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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T07:11:10.553002Z",
     "start_time": "2025-11-21T07:11:10.265854Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 绘制混淆矩阵\n",
    "print(\"Plotting confusion matrix...\")\n",
    "plot_confusion_matrix(y_test, y_test_pred)"
   ],
   "id": "76503a56efc00bb5",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Plotting confusion matrix...\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x800 with 2 Axes>"
      ],
      "image/png": "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2bJlS1xmg6q7du2qRYsWpfb6AQAAAAj3cibLQvz666/OYGp/FkCULl06NdcNAAAAuOS8esPHVA8iRo0alfjvIkWKaNCgQZo/f76uueYaZ7rXP//8U5988olat24d1JsDAAAAcGkQMW/evCTPK1Wq5Ays/u6775JkKFasWJH6awgAAABcQiQiUimIePvtt1PyYwAAAAA8IOgxEWbVqlVau3at4uPjnec2zevJkyedQdfPPfdcaq8jAAAAgHAOImx8hD1iYmKckqb8+fM7N5s7c+aMGjVqdHHWEgAAALhEuGP1RZjidfr06U624aefflKBAgWcUqdffvlFtWvX1hVXXBHsnwMAAADg9iBi//79uvbaa51/25SuixcvTrxPxGeffXYx1hEAAAC4pAOrQ/VwbRBh5Utbtmxx/l28eHFnHITJnj27/vrrr9RfQwAAAADhPSbiv//9r5544gnnXhENGzZUmzZtlC9fPqek6eqrr744awkAAAAgfIOIhx9+WJdddpmyZMni3GyuZ8+eevfdd5UrVy4nsAAAAADCGXesvkhTvLZo0SJJZsIex48f1549ey7kzwEAAACQi8dEnMuCBQvUuHHj1PpzAAAAQEgwsPoSBhEAAAAAvOGCypkAAAAAt+Jmc4GRiQAAAACQ+pkIG+8QyJo1a4J7ZwAAAADuDSLuvffesEr9xCckyIvSKW18/pdaGjnsLrkz8d48zhcN8OYEDjUGfCMv+u2ZBvKieI+e3x79+la2TOlDvQpIhlKdVAoiVq9enZIfAwAAAOABDKwGAAAA0mB1TVpGtgYAAABAUAgiAAAAAASFciYAAADATwTVTBcnE3HmzBl9//33mjhxog4ePKilS5fq0KFDF/KnAAAAALg9E7Fjxw49+OCDiouL04EDB9SgQQONHz9eixcv1ptvvqlSpUpdnDUFAAAALgEyERchE9G/f39VqVJFc+fOVWRkpLNsxIgRql27tgYOHBjsnwMAAADg9kzE77//rvfee0/p0/9zY5SMGTPq0Ucf1W233Zba6wcAAABcUkzxehEyEZkzZ9a+ffv+tXzDhg3Knj17sH8OAAAAgNuDiLvuukvPPvusM7DaFzzMnDlTffr00e23334x1hEAAABAOJczdezYUVFRUerXr5+OHTumhx56SNHR0WrTpo0z4BoAAAAIZwysvkj3ibj33nudx9Gj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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 18
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
